www.gusucode.com > 动网论坛Dvbbs v8.3 > 动网论坛Dvbbs v8.3\code\源程序\admin\Board.asp
<!--#include file="../conn.asp"--> <!--#include file="inc/const.asp"--> <!--#include file="../inc/dv_clsother.asp"--> <!--#include file="../inc/GroupPermission.asp"--> <!--#include file=../inc/md5.asp--> <% Head() Server.ScriptTimeout=999999 dim Str dim admin_flag admin_flag=Split("11,12",",") founderr=False CheckAdmin(admin_flag(0)) CheckAdmin(admin_flag(1)) call main() footer() Sub main() %> <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <th width="100%" colspan=2 style="text-align:center;">论坛管理 </th> </tr> <tr> <td class="td2" colspan=2> <p><B>注意</B>:<BR>①删除论坛同时将删除该论坛下所有帖子!删除分类同时删除下属论坛和其中帖子! 操作时请完整填写表单信息;<BR>②如果选择<B>复位所有版面</B>,则所有版面都将作为一级论坛(分类),这时您需要重新对各个版面进行归属的基本设置,<B>不要轻易使用该功能</B>,仅在做出了错误的设置而无法复原版面之间的关系和排序的时候使用,在这里您也可以只针对某个分类进行复位操作(见分类的更多操作下拉菜单),具体请看操作说明。<BR><font color=blue>每个版面的更多操作请见下拉菜单,操作前请仔细阅读说明,分类下拉菜单中比别的版面增加了分类排序和分类复位功能</font><BR> <font color=red>如果您希望某个版面需要会员付出一定代价(货币)才能进入,可以在版面高级设置中设置相应版面进入所需的金币或点券数以及能访问的时间是多少</font> </td> </tr> <tr> <td class="td2" height=25> <B>论坛操作选项</B></td> <td class="td2"><a href="board.asp">论坛管理首页</a> | <a href="board.asp?action=add">新建论坛版面</a> | <a href="?action=settemplates">模板风格批量设置</a> | <a href="?action=orders">一级分类排序</a> | <a href="?action=boardorders">N级分类排序</a> | <a href="?action=RestoreBoard" onclick="{if(confirm('复位所有版面将把所有版面恢复成为一级大分类,复位后要对所有版面重新进行归属的基本设置,请慎重操作,确定复位吗?')){return true;}return false;}">复位所有版面</a> | <a href="?action=RestoreBoardCache" onclick="{if(confirm('有时候您对论坛版面的修改在前台看不出修改效果,这很可能是相应版面的缓存没有生效所致,在这里将重建所有版面的缓存,如果您的版面很多,这将消耗您一定的时间,确定吗?')){return true;}return false;}">重建版面缓存</a> </td> </tr> </table> <p></p> <% select case Request("action") case "add" call add() case "edit" call edit() case "savenew"'新增论坛 call savenew() Case "savedit" call savedit() Case "del" call del() Case "orders" call orders() case "updatorders" call updateorders() Case "boardorders" call boardorders() case "updatboardorders" call updateboardorders() Case "mode" call mode() case "savemod" call savemod() Case "permission" call boardpermission() case "editpermission" call editpermission() case "RestoreBoard" call RestoreBoard() Case "RestoreBoardCache" Call RestoreBoardCache() Case "clearDate" Call clearDate Case "delDate" Call delDate Case "RestoreClass" Call RestoreClass Case "handorders" Call handorders Case "savehandorders" Call savehandorders Case "savesid" Call savesid Case "upallsid" Call upallsid Case "settemplates" Call Settemplates Case Else Call boardinfo() end select end Sub Sub upallsid() Dim Sid,cid,board SID= Request("Sid") ' cid=Request("CID") If SID="" Then SID=1 ' If CID="" Then CID=1 SID=CLng(SID) ' CID=CLng(CID) Dvbbs.Execute("Update Dv_Setup Set Forum_Sid="& SID ) Dvbbs.Execute("Update Dv_Board Set Sid="& SID ) Dvbbs.loadSetup() For Each board in Application(Dvbbs.CacheName&"_boardlist").documentElement.selectNodes("board/@boardid") Dvbbs.LoadBoardData(board.text) Next Dv_suc("论坛版面风格样式统一设置成功!") End Sub Sub savesid Dim i,boardid,TempStr Dim Templateslist,sid,j,bid,cid sid="" For Each TempStr in Request.form("upboardid") If Bid="" Then Bid=TempStr Else Bid=Bid&","&TempStr End If Next Bid=split(Bid,",") For i=0 to UBound(bid) If sid="" Then sid=Request("sid"&bid(i)) Else sid=sid&","&Request("sid"&bid(i)) End If ' If cid="" Then ' cid=Request("cid"&bid(i)) ' Else ' cid=cid&","&Request("cid"&bid(i)) ' End If Next sid=split(sid,",") For i=0 to UBound(bid) Dvbbs.Execute("Update Dv_board set sid="&CLng(sid(i))&" Where BoardId="&Clng(bid(i))&" ") Dvbbs.LoadBoardData(Clng(bid(i))) Next Dv_suc("论坛模板批量设置成功!") End Sub Sub Settemplates 'Application(Dvbbs.CacheName &"_style") Dim reBoard_Setting,MoreMenu,i Dim Templateslist,rs,SQL %> <form action ="board.asp?action=upallsid" method=post name="dv"> <table cellspacing="0" cellpadding="0" align="center" width="100%"> <tr> <th colspan="2" style="text-align:center;">模 板 统 一 设 置 </th> </tr> <tr> <td width="70%" align=Left class="td2"><B>所有论坛版面风格模板设置为:</b> <% Dim forum_sid,iCssName,iCssID,iStyleName Dim Forum_cid set rs=dvbbs.execute("select forum_sid,Forum_CID from dv_setup") Forum_sid=rs(0) ' Forum_CID=Rs(1) Rs.close:Set Rs=Nothing %> <Select Size=1 Name="sid"> <% If Not TypeName(Application(Dvbbs.CacheName & "_style"))="DOMDocument" Then Dvbbs.Loadstyle() For Each Templateslist in Application(Dvbbs.CacheName &"_style").documentElement.selectNodes("style") Response.write Templateslist.getAttribute("id")&"--"&Templateslist.getAttribute("type") Response.Write "<Option value="""& Templateslist.selectSingleNode("@id").text &"""" If Forum_sid = CLng(Templateslist.selectSingleNode("@id").text) Then Response.Write " selected " Response.Write ">"& Templateslist.selectSingleNode("@type").text &" </Option>" Next %> </Select> </td> <td width="30%" align=Left class="td2" > <Input type="submit" name="Submit" value="设 定" class="button"></td> </tr> </table><BR> </form> <form action ="board.asp?action=savesid" method=post name="dv1"> <table cellspacing="0" cellpadding="0" align="center" width="100%"> <tr> <th width="70%"> 论坛版面 </th> <th width="30%">采用风格样式 </th> </tr> <% dim classrow sql="select * from dv_board order by rootid,orders" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 do while not rs.eof reBoard_Setting=split(rs("Board_setting"),",") if classrow="td2" then classrow="td1" else classrow="td2" end if %> <tr> <td height="25" class="<%=classrow%>"> <%if rs("depth")>0 then%> <%for i=1 to rs("depth")%> <%next%> <%end if%> <%if rs("child")>0 then%><img src="../skins/default/plus.gif"><%else%><img src="../skins/default/nofollow.gif"><%end if%> <%if rs("parentid")=0 then%><b><%end if%><%=rs("boardtype")%><%if rs("child")>0 then%>(<%=rs("child")%>)<%end if%> <%if rs("parentid")=0 then%></b><%end if%> </td> <td align=Left class="<%=classrow%>"> <Select Size=1 Name="sid<%=Rs("BoardID")%>"> <% For Each Templateslist in Application(Dvbbs.CacheName &"_style").documentElement.selectNodes("style") Response.Write "<Option value="""& Templateslist.selectSingleNode("@id").text &"""" If Rs("SID") = CLng(Templateslist.selectSingleNode("@id").text) Then Response.Write " selected " Response.Write ">"& Templateslist.selectSingleNode("@type").text &" </Option>" Next %> </Select> <Input type="hidden" name="upboardid" value="<%=rs("boardid")%>"> </td></tr> <% Rs.movenext loop set rs=nothing %> <tr> <td width=300 align=Left class="td2" > </td> <td width=300 align=Left class="td2" ><input type="submit" name="Submit" value="设 定" class="button"></td> </tr> </table><BR><BR> </form> <% End Sub sub boardinfo() Dim reBoard_Setting,MoreMenu Dim Rs,classrow,iii,SQL,i %> <div class=menuskin id=popmenu onmouseover="clearhidemenu();" onmouseout="dynamichide(event)" style="Z-index:100"></div> <table width="100%" cellspacing="0" cellpadding="0" align="center"> <tr> <th width="35%">论坛版面 </th> <th width="35%">操作 </th> </tr> <% SQL="select boardid,boardtype,parentid,depth,child,Board_setting from dv_board order by rootid,orders" SET Rs = Conn.Execute(SQL) If Rs.eof Then Rs.close:Set Rs = Nothing Else SQL=Rs.GetRows(-1) Rs.close:Set Rs = Nothing For iii=0 To Ubound(SQL,2) reBoard_Setting=split(SQL(5,iii),",") if classrow="td2" then classrow="td1" else classrow="td2" end if Response.Write "<tr>" Response.Write "<td height=""25"" width=""55%"" class=" Response.Write classrow Response.Write ">" if SQL(3,iii)>0 then for i=1 to SQL(3,iii) Response.Write " " next end if if SQL(4,iii)>0 then Response.Write "<img src=""../skins/default/plus.gif"">" else Response.Write "<img src=""../skins/default/nofollow.gif"">" end if if SQL(2,iii)=0 then Response.Write "<b>" end if Response.Write SQL(1,iii) if SQL(4,iii)>0 then Response.Write "(" Response.Write SQL(4,iii) Response.Write ")" end if %> </td> <td width="45%" class="<%=classrow%>"> <a href="board.asp?action=add&editid=<%=SQL(0,iii)%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>添加版面</U></font></a> | <a href="board.asp?action=edit&editid=<%=SQL(0,iii)%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>基本设置</U></font></a> | <a href="BoardSetting.asp?editid=<%=SQL(0,iii)%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>高级设置</U></font></a> <% MoreMenu=MoreMenu & "<div class=menuitems><a href=update.asp?action=updat&submit=更新论坛数据&boardid="&SQL(0,iii)&" title=更新最后回复、帖子数、回复数><font color="&Dvbbs.mainsetting(3)&"><U>更新数据</U></font></a></div><div class=menuitems><a href=# onclick=alertreadme(\'清空将包括该论坛所有帖子置于回收站,确定清空吗?\',\'update.asp?action=delboard&boardid="&SQL(0,iii)&"\')><font color="&Dvbbs.mainsetting(3)&"><U>清空版面数据</U></font></a></div>" if SQL(4,iii)=0 then MoreMenu=MoreMenu & "<div class=menuitems><a href=# onclick=alertreadme(\'删除将包括该论坛的所有帖子,确定删除吗?\',\'board.asp?action=del&editid="&SQL(0,iii)&"\')><font color="&Dvbbs.mainsetting(3)&"><U>删除版面</U></font></a></div>" else MoreMenu=MoreMenu & "<div class=menuitems><a href=# onclick=alertreadme(\'该论坛含有下属论坛,必须先删除其下属论坛方能删除本论坛!\',\'#\')><font color="&Dvbbs.mainsetting(3)&"><U>删除版面</U></font></a></div>" end if MoreMenu=MoreMenu & "<div class=menuitems><a href=Board.asp?action=clearDate&boardid="&SQL(0,iii)&"><font color="&Dvbbs.mainsetting(3)&"><u>清理数据</u></font></a></div>" If SQL(2,iii)=0 Then MoreMenu=MoreMenu & "<div class=menuitems><a href=# onclick=alertreadme(\'复位该分类将会把该分类下的所有版面都复位成二级版面,包括原来的多级分类都将复位成二级版面,请慎重操作,确定复位吗?\',\'?action=RestoreClass&classid="&SQL(0,iii)&"\')><font color="&Dvbbs.mainsetting(3)&"><u>复位该分类</u></font></a></div><div class=menuitems><a href=?action=handorders&classid="&SQL(0,iii)&"><font color="&Dvbbs.mainsetting(3)&"><u>分类排序(手动)</u></font></a></div>" End If %> | <a href="#" onMouseOver="showmenu(event,'<%=MoreMenu%>')" style="CURSOR:hand"><font color=<%=Dvbbs.mainsetting(3)%>><u>更多操作</u></font></a> <% if reBoard_Setting(2)=1 then Response.Write "<a href=board.asp?action=mode&boardid="&SQL(0,iii)&"><font color="&Dvbbs.mainsetting(3)&"><U>认证用户</U></font></a>" end if %> </td></tr> <% MoreMenu="" Next End If %> </table><BR><BR> <SCRIPT LANGUAGE="JavaScript"> <!-- function alertreadme(str,url){ {if(confirm(str)){ location.href=url; return true; }return false;} } //--> </SCRIPT> <% end sub sub add() dim rs_c,sql,Rs Dim forum_sid,forum_cid,Style_Option,TempOption Dim iCssName,iCssID,iStyleName set rs_c= server.CreateObject ("adodb.recordset") sql = "select * from dv_board order by rootid,orders" rs_c.open sql,conn,1,1 dim boardnum,i set rs = server.CreateObject ("Adodb.recordset") sql="select Max(boardid) from dv_board" rs.open sql,conn,1,1 if rs.eof and rs.bof then boardnum=1 else boardnum=rs(0)+1 end if if isnull(boardnum) then boardnum=1 if boardnum=444 then boardnum=445 if boardnum=777 then boardnum=778 rs.close %> <form action ="board.asp?action=savenew" method=post name=theform> <input type="hidden" name="newboardid" value=<%=boardnum%>> <table width="100%" border="0" cellspacing="1" cellpadding="0" align="center"> <tr> <th colspan=2 style="text-align:center;"><B>添加新论坛</th> </tr> <tr> <td width="100%" height=30 class="td2" colspan=2> 说明:<BR>1、添加论坛版面后,相关的设置均为默认设置,请返回论坛版面管理首页版面列表的高级设置中设置该论坛的相应属性,如果您想对该论坛做更具体的权限设置,请到<A HREF="board.asp?action=permission"><font color=blue>论坛权限管理</font></A>中设置相应用户组在该版面的权限。<BR> 2、<font color=blue>如果您添加的是论坛分类</font>,只需要在所属分类中选择作为论坛分类即可;<font color=blue>如果您添加的是论坛版面</font>,则要在所属分类中确定并选择该论坛版面的上级版面。 </td> </tr> <tr> <td width="40%" height=30 class="td1">论坛名称</td> <td width="60%" class="td1"> <input type="text" name="boardtype" size="35"> </td> </tr> <tr> <td width="40%" height=24 class="td1">版面说明<BR>可以使用HTML代码</td> <td width="60%" class="td1"> <textarea name="Readme" cols="50" rows="5"></textarea> </td> </tr> <tr> <td width="40%" height=24 class="td1">版面规则<BR>可以使用HTML代码</td> <td width="60%" class="td1"> <textarea name="Rules" cols="50" rows="5"></textarea> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>所属类别</U></td> <td width="60%" class="td1"> <select name="class" id="Boardid"></select> <SCRIPT LANGUAGE="JavaScript"> <!-- BoardJumpListSelect('<%=Dvbbs.CheckNumeric(Request("editid"))%>','Boardid','做为论坛分类','0','0'); //--> </SCRIPT> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>使用样式风格</U><BR>相关样式风格中包含论坛颜色、图片<BR>等信息</td> <td width="60%" class="td1"> <% set rs_c=dvbbs.execute("select forum_sid,forum_cid from dv_setup") Forum_sid=rs_c(0) ' Forum_cid=rs_c(1) rs_c.close:Set rs_c=Nothing %> <Select Size=1 Name="sid"> <% Dim Templateslist For Each Templateslist in Application(Dvbbs.CacheName &"_style").documentElement.selectNodes("style") Response.Write "<Option value="""& Templateslist.selectSingleNode("@id").text &"""" If Forum_sid = CLng(Templateslist.selectSingleNode("@id").text) Then Response.Write " selected " Response.Write ">"& Templateslist.selectSingleNode("@type").text &" </Option>" Next %> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>论坛版主</U><BR>多版主添加请用|分隔,如:沙滩小子|wodeail</td> <td width="60%" class="td1"> <input type="text" name="boardmaster" size="35"> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>首页显示论坛图片</U><BR>出现在首页论坛版面介绍左边<BR>请直接填写图片URL</td> <td width="60%" class="td1"> <input type="text" name="indexIMG" size="35"> </td> </tr> <tr> <td width="40%" height=24 class="td1"> </td> <td width="60%" class="td1"> <input type="submit" name="Submit" value="添加论坛" class="button"> </td> </tr> </table> </form> <% set rs_c=nothing set rs=nothing end sub sub edit() dim rs_c,reBoard_Setting,rs,sql Dim forum_sid,forum_cid,Style_Option,TempOption Dim iCssName,iCssID,iStyleName,i sql = "select * from dv_board order by rootid,orders" set rs_c=Dvbbs.Execute(sql) sql = "select * from dv_board where boardid="&Dvbbs.CheckNumeric(request("editid")) set rs=Dvbbs.Execute(sql) reBoard_Setting=split(rs("Board_setting"),",") forum_sid=rs("sid") 'forum_cid=rs("cid") %> <form action ="board.asp?action=savedit" method=post name=theform> <input type="hidden" name=editid value="<%=Request("editid")%>"> <table width="100%" border="0" cellspacing="1" cellpadding="0" align="center"> <tr> <th colspan=2 style="text-align:center;">编辑论坛:<%=rs("boardtype")%></th> </tr> <tr> <td width="100%" height=30 class="td2" colspan=2> 说明:<BR>1、添加论坛版面后,相关的设置均为默认设置,请返回论坛版面管理首页版面列表的高级设置中设置该论坛的相应属性,如果您想对该论坛做更具体的权限设置,请到<A HREF="board.asp?action=permission"><font color=blue>论坛权限管理</font></A>中设置相应用户组在该版面的权限。<BR> 2、<font color=blue>如果您添加的是论坛分类</font>,只需要在所属分类中选择作为论坛分类即可;<font color=blue>如果您添加的是论坛版面</font>,则要在所属分类中确定并选择该论坛版面的上级版面 </td> </tr> <tr> <td width="40%" height=30 class="td1">论坛名称</td> <td width="60%" class="td1"> <input type="text" name="boardtype" size="35" value="<%=Server.htmlencode(rs("boardtype"))%>" > </td> </tr> <tr> <td width="40%" height=24 class="td1">版面说明<BR>可以使用HTML代码</td> <td width="60%" class="td1"> <textarea name="Readme" cols="50" rows="5"><%=server.HTMLEncode(Rs("readme")&"")%></textarea> </td> </tr> <tr> <td width="40%" height=24 class="td1">版面规则<BR>可以使用HTML代码</td> <td width="60%" class="td1"> <textarea name="Rules" cols="50" rows="5"><%=server.HTMLEncode(Rs("Rules")&"")%></textarea> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>所属类别</U><BR>所属论坛不能指定为当前版面<BR>所属论坛不能指定为当前版面的下属论坛</td> <td width="60%" class="td1"> <select name=class> <option value="0">做为论坛分类</option> <% do while not rs_c.EOF%> <option value="<%=rs_c("boardid")%>" <% if cint(rs("parentid")) = rs_c("boardid") then%> selected <%end if%>> <%if rs_c("depth")>0 then%> <%for i=1 to rs_c("depth")%> |<%next%> <%end if%> ├ <%=rs_c("boardtype")%></option> <% rs_c.MoveNext loop rs_c.Close %> </select> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>使用样式风格</U><BR>相关样式风格中包含论坛颜色、图片<BR>等信息</td> <td width="60%" class="td1"> <% set rs_c=dvbbs.execute("select forum_sid,forum_cid from dv_setup") Forum_sid=rs_c(0) Forum_cid=rs_c(1) rs_c.close:Set rs_c=Nothing %> <Select Size=1 Name="sid"> <% Dim Templateslist For Each Templateslist in Application(Dvbbs.CacheName &"_style").documentElement.selectNodes("style") Response.Write "<Option value="""& Templateslist.selectSingleNode("@id").text &"""" If rs("sid") = CLng(Templateslist.selectSingleNode("@id").text) Then Response.Write " selected " Response.Write ">"& Templateslist.selectSingleNode("@type").text &" </Option>" Next %> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>论坛版主</U><BR>多斑竹添加请用|分隔,如:沙滩小子|wodeail</td> <td width="60%" class="td1"> <input type="text" name="boardmaster" size="35" value='<%=rs("boardmaster")%>'> <input type="hidden" name="oldboardmaster" value='<%=rs("boardmaster")%>'> </td> </tr> <tr> <td width="40%" height=30 class="td1"><U>首页显示论坛图片</U><BR>出现在首页论坛版面介绍左边<BR>请直接填写图片URL</td> <td width="60%" class="td1"> <input type="text" name="indexIMG" size="35" value="<%=rs("indexIMG")%>"> </td> </tr> <tr> <td width="40%" height=24 class="td1"> </td> <td width="60%" class="td1"> <input type="submit" name="Submit" value="提交修改" class="button"> </td> </tr> <tr> <td width="100%" height=30 class="td2" colspan=2 align=right> <a href="board.asp?action=add&editid=<%=Request("editid")%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>添加版面</U></font></a> | <a href="board.asp?action=edit&editid=<%=Request("editid")%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>基本设置</U></font></a> | <a href="BoardSetting.asp?editid=<%=Request("editid")%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>高级设置</U></font></a> <%if reBoard_Setting(2)=1 then%> | <a href="board.asp?action=mode&boardid=<%=Request("editid")%>"><font color="<%=Dvbbs.mainsetting(3)%>"><U>认证用户</U></font></a> <%end if%> | <a href="update.asp?action=updat&submit=更新论坛数据&boardid=<%=Request("editid")%>" title="更新最后回复、帖子数、回复数"><font color="<%=Dvbbs.mainsetting(3)%>"><U>更新数据</U></font></a> | <a href="update.asp?action=delboard&boardid=<%=Request("editid")%>" onclick="{if(confirm('清空将包括该论坛所有帖子置于回收站,确定清空吗?')){return true;}return false;}"><font color="<%=Dvbbs.mainsetting(3)%>"><U>清空</U></font></a> | <%if rs("child")=0 then%><a href="board.asp?action=del&editid=<%=Request("editid")%>" onclick="{if(confirm('删除将包括该论坛的所有帖子,确定删除吗?')){return true;}return false;}"><font color="<%=Dvbbs.mainsetting(3)%>"><U>删除</U></a><%else%><a href="#" onclick="{if(confirm('该论坛含有下属论坛,必须先删除其下属论坛方能删除本论坛!')){return true;}return false;}"><font color="<%=Dvbbs.mainsetting(3)%>"><U>删除</U></a><%end if%> | <a href="Board.asp?action=clearDate&boardid=<%=Request("editid")%>"> <font color="<%=Dvbbs.mainsetting(3)%>"><u>清理数据</u></a> </td> </tr> </table> </form> <% rs.close set rs=nothing set rs_c=nothing end sub Sub Mode() Dim Boarduser Dim BoarduserNum Dim Rs,Sql %> <form action ="board.asp?action=savemod" method=post> <table width="100%" cellspacing="1" cellpadding="1" align="center"> <tr> <th width="52%">说明:</th> <th width="48%">操作:</th> </tr> <tr> <td width="52%" height=22 class=td1><B>论坛名称</B></td> <td width="48%" class=td1> <% Sql = "SELECT Boardid, Boardtype, Boarduser FROM Dv_Board WHERE Boardid = " & Dvbbs.CheckNumeric(Request("boardid")) Set Rs = Dvbbs.Execute(Sql) If Rs.Eof And Rs.Bof Then Response.Write "该版面并不存在或者该版面不是加密版面。" Else Response.Write Rs(1) Response.Write "<input type=hidden value=" & Rs(0) & " name=boardid>" Boarduser = Rs(2) End If Set Rs = Nothing %> </td> </tr> <tr> <td width="52%" class=td1 valign=top><B>认证用户</B>: <% If Not Isnull(Boarduser) Or Boarduser <> "" Then BoarduserNum = Split(Boarduser,",") Response.Write "(本版共有<font color=red>" & Ubound(BoarduserNum)+1 & "</font>位认证用户)" Else Response.Write "(本版暂时没有认证用户)" End If %> <br> 只有设定为认证论坛的论坛需要填写能够进入该版面的用户,每输入一个用户请确认用户名在论坛中存在,每个用户名用<B>回车</B>分开</font> <% If Clng(Dvbbs.Board_Setting(62))>0 Or Clng(Dvbbs.Board_Setting(63))>0 Then Response.Write "<BR><font color=blue>此版面设置了支付金币或点券方能进入,有效期为<font color=red>" & Clng(Dvbbs.Board_Setting(64)) & "</font>个月,请在每个用户名后面加上:=当前时间,每行效果如:admin="&Now&"</font>" %> </td> <td width="48%" class=td1> <textarea cols="50" rows="3" name="vipuser" id="vipuser"> <%if not isnull(boarduser) or boarduser<>"" then response.write Replace(boarduser,",",Chr(10)) end if%></textarea> <br><a href="javascript:admin_Size(-3,'vipuser')"><img src="skins/images/minus.gif" unselectable="on" border='0'></a> <a href="javascript:admin_Size(3,'vipuser')"><img src="skins/images/plus.gif" unselectable="on" border='0'></a> </td> </tr> <tr> <td width="52%" height=22 class=td1> </td> <td width="48%" class=td1> <input type="submit" name="Submit" value="设 定" class="button"> </td> </tr> </table> </form> <% End Sub '保存编辑论坛认证用户信息 '入口:用户列表字符串 sub savemod() dim boarduser dim boarduser_1 dim userlen dim updateinfo,i '清理付费论坛过期的认证用户 2005-3-10 Dv.Yz Dim Get_BoardUser_Money, BoardUser_Money Get_BoardUser_Money = False If Clng(Dvbbs.Board_Setting(62))>0 Or Clng(Dvbbs.Board_Setting(63))>0 Then Get_BoardUser_Money = True If trim(request("vipuser"))<>"" then boarduser=Replace(request("vipuser"),"'","") boarduser=split(boarduser,chr(13)&chr(10)) For i = 0 To Ubound(Boarduser) If Not (Boarduser(i) = "" Or Boarduser(i) = " ") Then If Get_BoardUser_Money Then BoardUser_Money = Split(Boarduser(i),"=") If Not DateDiff("d",BoardUser_Money(1),Now()) > Cint(Dvbbs.Board_Setting(64))*30 Then Boarduser_1 = "" & Boarduser_1 & "" & Boarduser(i) & "," End If Else Boarduser_1 = "" & Boarduser_1 & "" & Boarduser(i) & "," End If End If Next userlen=len(boarduser_1) if boarduser_1<>"" then boarduser=left(boarduser_1,userlen-1) updateinfo=" boarduser='"&boarduser&"' " Dvbbs.Execute("update dv_board set "&updateinfo&" where boardid="&Dvbbs.CheckNumeric(request("boardid"))) Dv_suc("论坛设置成功!<LI>成功添加认证用户:"&boarduser&"<LI><a href=""?action=RestoreBoardCache"" >请执行重建版面缓存才能生效</a><br>") RestoreBoardCache() else Errmsg = errmsg + "你没有添加认证用户!"'response.write "你没有添加认证用户!" Dvbbs_Error() Exit Sub end if Else Errmsg = errmsg + "你没有添加认证用户!"'response.write "<p><font color=red>你没有添加认证用户</font><br><br>" Dvbbs_Error() End If End Sub '保存添加论坛信息 Sub savenew() If request("boardtype")="" Then Errmsg=Errmsg+"<br>"+"<li>请输入论坛名称。" founderr=true End If If request("class")="" Then Errmsg=Errmsg+"<br>"+"<li>请选择论坛分类。" founderr=true End If If request("readme")="" Then Errmsg=Errmsg+"<br>"+"<li>请输入论坛说明。" founderr=true End If If founderr=true Then dvbbs_error() exit sub End If Dim boardid,rootid,parentid,depth,orders,Fboardmaster,maxrootid,parentstr,rs,SQL If request("class")<>"0" Then Set rs=Dvbbs.Execute("select rootid,boardid,depth,orders,boardmaster,ParentStr from dv_board where boardid="&Dvbbs.CheckNumeric(request("class"))) rootid=rs(0) parentid=rs(1) depth=rs(2) orders=rs(3) If depth+1>20 Then Errmsg="本论坛限制最多只能有20级分类" dvbbs_error() Exit Sub End If parentstr=rs(5) Else Set rs=Dvbbs.Execute("select max(rootid) from dv_board") maxrootid=rs(0)+1 If IsNull(MaxRootID) Then MaxRootID=1 End If sql="select boardid from dv_board where boardid="&Dvbbs.CheckNumeric(request("newboardid")) Set rs=Dvbbs.Execute(sql) If not (rs.eof and rs.bof) then Errmsg="您不能指定和别的论坛一样的序号。" dvbbs_error() exit sub Else boardid=request("newboardid") End If Dim trs,forumuser,setting Set trs=Dvbbs.Execute("select * from dv_setup") Setting=Split(trs("Forum_Setting"),"|||") forumuser=Setting(2) set rs = server.CreateObject ("adodb.recordset") sql = "select * from dv_board" rs.Open sql,conn,1,3 rs.AddNew If request("class")<>"0" Then rs("depth")=depth+1 rs("rootid")=rootid rs("orders") = Request.form("newboardid") rs("parentid") = Request.Form("class") if ParentStr="0" then rs("ParentStr")=Request.Form("class") Else rs("ParentStr")=ParentStr & "," & Request.Form("class") End If Else rs("depth")=0 rs("rootid")=maxrootid rs("orders")=0 rs("parentid")=0 rs("parentstr")=0 end if rs("boardid") = Request.form("newboardid") rs("boardtype") = request.form("boardtype") rs("readme") = Request.form("readme") rs("Rules") = Request.form("Rules") rs("TopicNum") = 0 rs("PostNum") = 0 rs("todaynum") = 0 rs("child")=0 rs("LastPost")="$0$"&Now()&"$$$$$" rs("Board_Setting")="0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,16240,3,0,gif|jpg|jpeg|bmp|png|rar|txt|zip|mid,0,0,1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1,0,1,100,20,10,9,normal,1,10,10,0,0,0,0,1,0,0,1,4,0,0,0,200,0,0,,$$,0,0,0,1,0|0|0|0|0|0|0|0|0,0|0|0|0|0|0|0|0|0,0,0,0,0,0,0,0,0,0,灌水|广告|奖励|惩罚|好文章|内容不符|重复发帖,0,1,0,24,0,0" rs("sid")=Dvbbs.CheckNumeric(request.form("sid")) ' rs("cid")=Dvbbs.CheckNumeric(request.form("cid")) rs("board_ads")=trs("forum_ads") rs("board_user")=forumuser If Request("boardmaster")<>"" Then rs("boardmaster") = Request.form("boardmaster") End If If request.form("indexIMG")<>"" Then rs("indexIMG")=request.form("indexIMG") End If rs.Update rs.Close If Request("boardmaster")<>"" Then Call addmaster(Request("boardmaster"),"none",0) dv_suc("论坛添加成功!<br>该论坛目前高级设置为默认选项,建议您返回论坛管理中心重新设置该论坛的高级选项,<A HREF=BoardSetting.asp?editid="&Request.form("newboardid")&">点击此处进入该版面高级设置</A><br>" & str) set rs=nothing trs.close set trs=nothing CheckAndFixBoard 0,1 RestoreBoardCache() End Sub '保存编辑论坛信息 Sub savedit() if clng(request("editid"))=clng(request("class")) then Errmsg="所属论坛不能指定自己" dvbbs_error() exit sub end if dim newboardid,maxrootid,readme,Rules dim parentid,boardmaster,depth,child,ParentStr,rootid,iparentid,iParentStr dim trs,brs,mrs Dim iii,rs,sql set rs = server.CreateObject ("adodb.recordset") sql = "select * from dv_board where boardid="&request("editid") rs.Open sql,conn,1,3 newboardid=rs("boardid") parentid=rs("parentid") iparentid=rs("parentid") boardmaster=rs("boardmaster") ParentStr=rs("ParentStr") depth=rs("depth") child=rs("child") rootid=rs("rootid") '判断所指定的论坛是否其下属论坛 if ParentID=0 then if clng(request("class"))<>0 then set trs=Dvbbs.Execute("select rootid from dv_board where boardid="&request("class")) if rootid=trs(0) then errmsg="您不能指定该版面的下属论坛作为所属论坛1" dvbbs_error() exit sub end if end if else set trs=Dvbbs.Execute("select boardid from dv_board where ParentStr like '%"&ParentStr&","&newboardid&"%' and boardid="&request("class")) if not (trs.eof and trs.bof) then errmsg="您不能指定该版面的下属论坛作为所属论坛2" dvbbs_error() exit sub end if end if If parentid=0 then parentid=rs("boardid") iparentid=0 Else Set mrs=Dvbbs.Execute("select max(rootid) from dv_board") Maxrootid=mrs(0)+1 mrs.close:Set mrs=Nothing rs("rootid")=Maxrootid End if rs("boardtype") = Request.Form("boardtype") '取消JS过滤。 rs("parentid") = Request.Form("class") rs("boardmaster") = Request("boardmaster") rs("readme") = Request("readme") rs("Rules") = Request.form("Rules") rs("indexIMG")=request.form("indexIMG") rs("sid")=Cint(request.form("sid")) ' rs("cid")=Cint(request.form("cid")) rs.Update rs.Close:set rs=nothing if request("oldboardmaster")<>Request("boardmaster") then call addmaster(Request("boardmaster"),request("oldboardmaster"),1) dv_suc("论坛修改成功!<br>" & str) CheckAndFixBoard 0,1 Boardchild() RestoreBoardCache() End sub '删除版面,删除版面帖子,入口:版面ID Sub Del() Dim Trs,EditId EditId = Dvbbs.CheckNumeric(Request("editid")) '更新其上级版面论坛数,如果该论坛含有下级论坛则不允许删除 Set tRs = Dvbbs.Execute("SELECT RootID FROM Dv_Board WHERE BoardID = " & EditId) Dim UpdateRootID,Rs,sql,i UpdateRootID = tRs(0) Set Rs = Dvbbs.Execute("SELECT ParentStr, Child, Depth FROM Dv_Board WHERE BoardID = " & EditId) If Not (Rs.Eof And Rs.Bof) Then If Rs(1) > 0 Then Response.Write "该论坛含有下属论坛,请删除其下属论坛后再进行删除本论坛的操作" Exit Sub End If '如果有上级版面,则更新数据 If Rs(2) > 0 Then Dvbbs.Execute("UPDATE Dv_Board SET Child = Child - 1 WHERE BoardID IN (" & Rs(0) & ")") End If Sql = "DELETE FROM Dv_Board WHERE Boardid = " & EditId Dvbbs.Execute(Sql) For i = 0 To Ubound(AllPostTable) Sql = "DELETE FROM " & AllPostTable(i) & " WHERE BoardID = " & EditId Dvbbs.Execute(Sql) Next Dvbbs.Execute("DELETE FROM Dv_Topic WHERE BoardID = " & EditId) Dvbbs.Execute("DELETE FROM Dv_BestTopic WHERE BoardID = " & EditId) Dvbbs.Execute("DELETE FROM Dv_Upfile WHERE F_BoardID = " & EditId) Dvbbs.Execute("DELETE FROM Dv_Appraise WHERE BoardID = " & EditId) '删除被删除论坛的自定义用户权限 2004-11-15 Dv.Yz Dvbbs.Execute("DELETE FROM Dv_UserAccess WHERE NOT Uc_BoardID IN (SELECT BoardID FROM Dv_Board)") End If Set Rs = Nothing CheckAndFixBoard 0,1 RestoreBoardCache() Dv_suc("论坛删除成功!") End Sub sub orders() Dim rs,SQL %> <table width="100%" border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <th style="text-align:center;">论坛一级分类重新排序修改(请在相应论坛分类的排序表单内输入相应的排列序号) </th> </tr> <tr> <td class="td1"><table width="50%"> <% set rs = server.CreateObject ("Adodb.recordset") sql="select * from dv_Board where ParentID=0 order by RootID" rs.open sql,conn,1,1 if rs.eof and rs.bof then response.write "还没有相应的论坛分类。" else do while not rs.eof response.write "<form action=board.asp?action=updatorders method=post><tr><td width=""50%"">"&rs("boardtype")&"</td>" response.write "<td width=""50%""><input type=text name=""OrderID"" size=4 value="""&rs("rootid")&"""><input type=hidden name=""cID"" value="""&rs("rootid")&"""> <input type=submit name=Submit value=修改 class=button></td></tr></form>" rs.movenext loop %> </table> <BR> <font color=red>请注意,这里系统会<B>自动修复</B>不正确的序号!</font> <% end if rs.close set rs=nothing %> </td> </tr> </table> <% end sub sub updateorders() dim cID,OrderID,ClassName,rs cID=Dvbbs.CheckNumeric(request.form("cID")) OrderID=Dvbbs.CheckNumeric(request.form("OrderID")) set rs=Dvbbs.Execute("select boardid from dv_board where rootid="&orderid) If rs.eof and rs.bof Then Dvbbs.Execute("update dv_board set rootid="&OrderID&" where rootid="&cID) Dv_suc("设置成功") Else Errmsg = errmsg + "请不要和其他论坛设置相同的序号"'response.write "请不要和其他论坛设置相同的序号" Dvbbs_Error() end if CheckAndFixBoard 0,1 RestoreBoardCache() end sub Sub Boardorders() %> <table width="100%" border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <th style="text-align:center;">论坛N级分类重新排序修改(请在相应论坛分类的排序表单内输入相应的排列序号) </th> </tr> <tr> <td class="td1"><table width="90%"> <% Dim Trs,Uporders,Doorders,Rs,SQL,i Set Rs = Server.CreateObject ("Adodb.recordset") Sql = "SELECT Depth, Child, Parentid, Boardtype, Orders, BoardId FROM Dv_Board ORDER BY RootID, Orders" Set Rs = Dvbbs.Execute(Sql) If Rs.Eof And Rs.Bof Then Response.Write "还没有相应的论坛分类。" Else Sql = Rs.GetRows(-1) Dim Bn Rs.Close:Set Rs = Nothing For Bn = 0 To Ubound(Sql,2) Response.Write "<form action=board.asp?action=updatboardorders method=post><tr><td width=""50%"">" If Sql(0,Bn) > 0 Then For i = 1 To Sql(0,Bn) Response.Write " " Next End If If Sql(1,Bn) > 0 Then Response.Write "<img src=../skins/default/plus.gif>" Else Response.Write "<img src=../skins/default/nofollow.gif>" End If If Sql(2,Bn) = 0 Then Response.Write "<b>" End If Response.Write Sql(3,Bn) If Sql(1,Bn) > 0 Then Response.Write "(" & Sql(1,Bn) & ")" End If Response.Write "</td><td width=""50%"">" If Sql(2,Bn) > 0 Then '算出相同深度的版面数目,得到该版面在相同深度的版面中所处位置(之上或者之下的版面数) '所能提升最大幅度应为For i=1 to 该版之上的版面数 Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE ParentID = " & Sql(2,Bn) & " AND ORDERS < " & Sql(4,Bn) &"") Uporders = Trs(0) If Isnull(Uporders) Then Uporders = 0 '所能降低最大幅度应为For i=1 to 该版之下的版面数 Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE ParentID = " & Sql(2,Bn) &" AND ORDERS > " & Sql(4,Bn) &"") Doorders = Trs(0) If Isnull(doorders) Then Doorders = 0 If Uporders > 0 Then Response.Write "<select name=uporders size=1><option value=0>向上移动</option>" For i = 1 To Uporders Response.Write "<option value=" & i & ">" & i & "</option>" Next Response.Write "</select>" End If If Doorders > 0 Then If uporders > 0 Then Response.Write " " Response.Write "<select name=doorders size=1><option value=0>向下移动</option>" For i = 1 To Doorders Response.Write "<option value=" & i & ">" & i & "</option>" Next Response.Write "</select>" End If If Doorders > 0 Or Uporders > 0 Then Response.Write "<input type=hidden name=""editID"" value=""" & Sql(5,Bn) & """> <input type=submit name=Submit value=修改 class=button>" End If End If Response.Write "</td></tr></form>" Uporders = 0 Doorders = 0 Next Response.Write "</table>" End If %> </td> </tr> </table> <% End Sub 'N级分类移动 2004-10-18 Dv.Yz Sub Updateboardorders() Dim Orders, tRs, Parentid Dim Uporders, Doorders Dim Frontorders, Nextorders, Lastorders Dim Rootid, Depth, Child, Parentstr, Rs, SQL If Not Isnumeric(Request("EditID")) Then Response.Write "非法的参数!" Exit Sub End If If Request("Uporders") <> "" And Not Cint(Request("Uporders")) = 0 Then If Not Isnumeric(Request("Uporders")) Then Response.Write "非法的参数!" Exit Sub Elseif Cint(Request("Uporders")) = 0 Then Response.Write "请选择要提升的数字!" Exit Sub End If Uporders = Cint(Request("Uporders")) '向上移动 Set Rs = Dvbbs.Execute("SELECT Orders, Rootid, Depth, ParentID, Child, ParentStr FROM Dv_Board WHERE Boardid = " & Request("EditID")) Orders = Rs(0) Rootid = Rs(1) Depth = Rs(2) Parentid = Rs(3) Child = Rs(4) ParentStr = Rs(5) & "," & Request("EditID") Set Rs = Nothing '取Lastorders值 Sql = "SELECT Top 1 Orders FROM Dv_Board WHERE Rootid = " & Rootid & " ORDER BY Orders DESC" Set Rs = Dvbbs.Execute(Sql) Lastorders = Rs(0) Set Rs = Nothing '取取移动结属ORDERS值 If Child > 0 Then Sql = "SELECT COUNT(*) FROM Dv_Board WHERE ParentStr LIKE '%" & ParentStr & "%' AND Rootid = " & Rootid Set Rs = Dvbbs.Execute(Sql) Nextorders = Orders + Rs(0) Else Nextorders = Orders End If Doorders = Nextorders Set Rs = Nothing '取同级版面往上的版面ORDERS值 Sql = "SELECT Top " & Uporders & " Orders FROM Dv_Board WHERE Rootid = " & Rootid & " AND Depth = " & Depth & " AND ParentID = " & Parentid & " AND Orders < " & Orders & " ORDER BY Orders Desc" Set Rs = Dvbbs.Execute(Sql) If Rs.Eof And Rs.Bof Then Frontorders = 0 Else Sql = Rs.GetRows(-1) Frontorders = Sql(0,Ubound(Sql,2)) End If '一次更新Orders Sql = "UPDATE Dv_Board SET Orders = Orders + " & Doorders & " WHERE Rootid = " & Rootid & " AND (Orders >= " & Frontorders & " AND Orders < " & Orders & " OR Orders > " & Nextorders & ")" ' Response.Write Sql Dvbbs.Execute(Sql) Elseif Request("Doorders") <> "" Then If Not Isnumeric(Request("Doorders")) Then Response.Write "非法的参数!" Exit Sub Elseif Cint(Request("doorders")) = 0 Then Response.Write "请选择要下降的数字!" Exit Sub End If Uporders = Cint(Request("doorders")) '向下移动 Set Rs = Dvbbs.Execute("SELECT Orders, Rootid, Depth, ParentID, Child, ParentStr FROM Dv_Board WHERE Boardid = " & Request("EditID")) Orders = Rs(0) Rootid = Rs(1) Depth = Rs(2) Parentid = Rs(3) Child = Rs(4) ParentStr = Rs(5) & "," & Request("EditID") Set Rs = Nothing '取Lastorders值 Sql = "SELECT Top 1 Orders FROM Dv_Board WHERE Rootid = " & Rootid & " ORDER BY Orders DESC" Set Rs = Dvbbs.Execute(Sql) Lastorders = Rs(0) Set Rs = Nothing '取取移动结属ORDERS值 If Child > 0 Then Sql = "SELECT COUNT(*) FROM Dv_Board WHERE ParentStr LIKE '%" & ParentStr & "%' AND Rootid = " & Rootid Set Rs = Dvbbs.Execute(Sql) Nextorders = Orders + Rs(0) Else Nextorders = Orders End If Set Rs = Nothing '取同级版面移下后上一个版面ORDERS值 Sql = "SELECT Top " & Uporders + 1 & " Orders, Child, ParentStr, BoardID FROM Dv_Board WHERE Rootid = " & Rootid & " AND Depth = " & Depth & " AND ParentID = " & Parentid & " AND Orders > " & Orders & " ORDER BY Orders" Set Rs = Dvbbs.Execute(Sql) If Rs.Eof And Rs.Bof Then Frontorders = Lastorders Else Sql = Rs.GetRows(-1) Frontorders = Sql(0,Ubound(Sql,2)) - 1 If Not Ubound(Sql,2) = Uporders Then If Sql(1,Ubound(Sql,2)) > 0 Then ParentStr = Sql(2,Ubound(Sql,2)) & "," & Sql(3,Ubound(Sql,2)) Set Rs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE ParentStr LIKE '%" & ParentStr & "%' AND Rootid = " & Rootid) Frontorders = Sql(0,Ubound(Sql,2)) + Rs(0) Else Frontorders = Sql(0,Ubound(Sql,2)) End If End If End If Doorders = Frontorders '一次更新Orders Sql = "UPDATE Dv_Board SET Orders = Orders + " & Doorders & " WHERE Rootid = " & Rootid & " AND Orders >= " & Orders & " AND Orders <= " & Nextorders & " OR Orders > " & Frontorders ' Response.Write Sql Dvbbs.Execute(Sql) End If CheckAndFixBoard 0,1 RestoreBoardCache() Response.Redirect "board.asp?action=boardorders" End Sub Sub Addmaster(s,o,n) Dim Arr, Pw, Oarr Dim Classname, Titlepic, Rs, Sql, i Set Rs = Dvbbs.Execute("SELECT Usertitle, GroupPic FROM Dv_UserGroups WHERE Usergroupid = 3") If Not (Rs.Eof And Rs.Bof) Then Classname = Rs(0) Titlepic = Rs(1) End If Randomize Pw = CInt(Rnd * 9000) + CInt(Rnd * 9000) + 100000 Arr = Split(s,"|") Oarr = Split(o,"|") Set Rs = Server.Createobject("Adodb.Recordset") For i = 0 To Ubound(Arr) Sql = "SELECT * FROM [Dv_User] WHERE Username = '" & Arr(i) & "'" Rs.Open Sql,Conn,1,3 If Rs.Eof And Rs.Bof Then Rs.Addnew Rs("Username") = Arr(i) Rs("Userpassword") = Md5(Pw,16) Rs("Userclass") = Classname Rs("UserGroupID") = 3 Rs("Titlepic") = Titlepic Rs("UserWealth") = 100 Rs("Userep") = 30 Rs("Usercp") = 30 Rs("Userisbest") = 0 Rs("Userdel") = 0 Rs("Userpower") = 0 Rs("Lockuser") = 0 '加入更详细资料使登录与显示资料不会出错。 Rs("UserSex") = 1 Rs("UserEmail") = Arr(i) & "@aspsky.net" Rs("UserFace") = "Images/userface/image1.gif" Rs("UserWidth") = 32 Rs("UserHeight") = 32 Rs("UserIM") = "||||||||||||||||||" Rs("UserFav") = "陌生人,我的好友,黑名单" Rs("LastLogin") = Now() Rs("JoinDate") = Now() Rs("Userpost") = 0 Rs("Usertopic") = 0 Rs.Update Str = Str & "你添加了以下用户:<b>" & Arr(i) & "</b> 密码:<b>" & Pw & "</b><br><br>" Dvbbs.Execute("UPDATE Dv_Setup SET Forum_Usernum = Forum_Usernum + 1, Forum_Lastuser = '" & Arr(i) & "'") Else '修正添加版主不改变等级的错误 2005-3-7 Dv.Yz If Rs("UserGroupID") > 3 Then Rs("Userclass") = Classname Rs("UserGroupID") = 3 Rs("Titlepic") = Titlepic Rs.Update End If End If Rs.Close Next '判断原版主在其他版面是否还担任版主,如没有担任则撤换该用户职位。 If n = 1 Then Dim Iboardmaster Dim UserGrade, Article Iboardmaster = False For i = 0 To Ubound(Oarr) Set Rs = Dvbbs.Execute("SELECT Boardmaster FROM Dv_Board") Do While Not Rs.Eof If Instr("|" & Trim(Rs("Boardmaster")) & "|","|" & Trim(Oarr(i)) & "|") > 0 Then Iboardmaster = True Exit Do End If Rs.Movenext Loop If Not Iboardmaster Then Set Rs = Dvbbs.Execute("SELECT Userid, UserGroupID, UserPost FROM [Dv_User] WHERE Username = '" & Trim(Oarr(i)) & "'") If Not (Rs.Eof And Rs.Bof) Then If Rs(1) > 2 Then If Not Isnumeric(Rs(2)) Or Rs(2) = "" Then Article = 0 Else Article = Cstr(Rs(2)) End If '取对应注册会员的等级 Set UserGrade = Dvbbs.Execute("SELECT TOP 1 Usertitle, Grouppic,UserGroupID FROM Dv_Usergroups WHERE Minarticle <= " & Article & " AND NOT MinArticle = -1 AND ParentGID = 4 ORDER BY MinArticle DESC") If Not (UserGrade.Eof And UserGrade.Bof) Then Dvbbs.Execute("UPDATE [Dv_User] SET UserGroupID = 10, Titlepic = '" & UserGrade(1) & "', Userclass = '" & UserGrade(0) & "' WHERE Userid = " & Rs(0)) End If UserGrade.Close:Set UserGrade = Nothing End If End If End If Iboardmaster = False Next End If Set Rs = Nothing End Sub Rem 分版面用户权限设置 重写2004-5-2 Dvbbs.YangZheng Sub BoardPerMission() Dim iUserGroupID(100), UserTitle(100),iParentID(100) Dim Trs, Ars, k, ii Dim Bn,Sql Set Trs = Dvbbs.Execute("SELECT Usertitle,Usergroupid,ParentGID FROM Dv_UserGroups WHERE Not ParentGID=0 ORDER BY ParentGID,UserGroupId") If Not (Trs.Eof And Trs.Bof) Then Sql = Trs.GetRows(-1) Trs.Close:Set Trs = Nothing For ii = 0 To Ubound(Sql,2) UserTitle(ii) = Sql(0,ii) iUserGroupID(ii) = Sql(1,ii) iParentID(ii) = Sql(2,ii) Next End If %> <table width="100%" border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <th style="text-align:center;">编辑论坛权限</th> </tr> <tr> <td class=td1> ①您可以设置不同用户组在不同论坛内的权限,红色表示为该论坛该用户组使用的是用户定义属性<BR> ②该权限不能继承,比如您设置了一个包含下级论坛的版面,那么只对您设置的版面生效而不对其下属论坛生效<BR> ③如果您想设置生效,必须在设置页面<B>选择自定义设置</B>,选择了自定义设置后,这里设置的权限将<B>优先</B>于用户组设置,比如用户组默认不能管理帖子,而这里设置了该用户组可管理帖子,那么该用户组在这个版面就可以管理帖子 </td> </tr> </table><BR> <table width="100%" cellspacing="1" cellpadding="1" align="center"> <tr> <th width="35%">论坛版面 </th> <th width="35%">设置用户组权限 </th> </tr> <% Dim Percount,Rs,i Dim hasc Sql = "SELECT Depth, Child, Parentid, BoardType, Boardid,IsGroupSetting FROM Dv_Board ORDER BY Rootid, Orders" Set Rs = Dvbbs.Execute(Sql) If Not (Rs.Eof And Rs.Bof) Then Sql = Rs.GetRows(-1) Set Rs = Nothing For Bn = 0 To Ubound(Sql,2) Response.Write "<tr><td height=25 width=40% class=td1>" If Sql(0,Bn) > 0 Then For i = 1 To Sql(0,Bn) Response.Write " " Next End If If Sql(1,Bn) > 0 Then Response.Write "<img src=../skins/default/plus.gif>" Else Response.Write "<img src=../skins/default/nofollow.gif>" End If If Sql(2,Bn) = 0 Then Response.Write "<b>" End If Response.Write Sql(3,Bn) If Sql(1,Bn) > 0 Then Response.Write "(" & Sql(1,Bn) & ")" End If 'Percount = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_BoardPermission WHERE Boardid = " & Sql(4,Bn))(0) %> </td> <FORM METHOD=POST ACTION="?action=editpermission"> <td width=60% class="td1"> <select name="groupid" size=1> <% hasc = 0 For k = 0 To ii-1 Response.Write "<option value=""" & iUserGroupID(k) & """>" & SysGroupName(iParentID(k)) & UserTitle(k) If Sql(5,Bn)<>"" Then Set Ars = Dvbbs.Execute("SELECT Pid FROM Dv_BoardPerMission WHERE BoardID = " & Sql(4,Bn) & " AND GroupID = " & iUserGroupID(k)) If Not Ars.Eof Then Response.Write "(自定义)" hasc=1 End If End If Response.Write "</option>" Next Response.Write "</select><input type=hidden value=" Response.Write Sql(4,Bn) Response.Write " name=reboardid><input type=submit name=submit value=设置 class=button>" If hasc=1 Then Response.Write "(有自定义版面)" End If Response.Write "</td></FORM></tr>" Next End If Response.Write "</table><BR><BR>" Set Ars = Nothing Set Trs = Nothing End Sub Sub editpermission() if not isnumeric(request("groupid")) Or request("groupid")="" Or request("reBoardID")="" Or not isnumeric(request("reBoardID")) then response.write "错误的参数,请返回分版面权限设置首页选择正确的设置!" exit sub end if if request("groupaction")="yes" then dim GroupSetting,rspid,SaveGroupid,NewGroupid Dim IsGroupSetting,MyIsGroupSetting Dim Sql,i,k Dim UpdateStr,OldStr,NewStr GroupSetting=GetGroupPermission If Not IsNumeric(Replace(Request.Form("GroupID"),",","")) or Request.Form("GroupID")="" Then Errmsg = ErrMsg + "<BR><li>请选择对应的用户组。" Dvbbs_Error() Exit Sub End If SaveGroupid = Request.Form("groupid") Set rs= Server.CreateObject("ADODB.Recordset") if Request("isdefault")=1 then '清理ID Dvbbs.Execute("Delete from dv_BoardPermission where BoardID="&request.Form("reBoardID")&" and GroupID in ("&SaveGroupid&")") Else '使用自定义 sql="Select Pid,GroupID,PSetting from dv_BoardPermission where BoardID="&request("reBoardID")&" And GroupID in ("&SaveGroupid&") " NewGroupid = ","&SaveGroupid&"," Set Rs=Dvbbs.Execute(sql) If Not Rs.eof And Not Rs.bof Then If Instr(SaveGroupid,",")=0 Then sql="update dv_BoardPermission set PSetting='"&GroupSetting&"' where pid="&Rs(0) Dvbbs.Execute(Sql) NewGroupid = "" Else Do while Not Rs.Eof NewStr = Split(GroupSetting,",") OldStr = Split(Rs(2),",") UpdateStr = "" For K = 0 To 90 If Request.Form("CheckGroupSetting("&K&")")="on" Then UpdateStr = UpdateStr & NewStr(k) Else UpdateStr = UpdateStr & OldStr(k) End If If K<90 Then UpdateStr = UpdateStr & "," End If Next sql="update dv_BoardPermission set PSetting='"&UpdateStr&"' where pid="&Rs(0) Dvbbs.Execute(Sql) NewGroupid = Replace(NewGroupid,","&Rs(1)&",",",") Rs.MoveNext Loop End If Else Dim iSaveGroupID iSaveGroupID = Split(SaveGroupid,",") For i = 0 To Ubound(iSaveGroupID) sql="insert into dv_BoardPermission (BoardID,GroupID,PSetting) values ("&request("reBoardID")&","&iSaveGroupID(i)&",'"&GroupSetting&"')" Dvbbs.Execute(Sql) Next NewGroupid = "" End If Set Rs=Nothing If Replace(NewGroupid,",","")<>"" Then '有新组添加 NewGroupid = Split(NewGroupid,",") For i=1 to Ubound(NewGroupid)-1 Sql = Dvbbs.Execute("select GroupSetting From Dv_UserGroups where UserGroupID="&NewGroupid(i))(0) If Sql<>"" Then NewStr = Split(GroupSetting,",") OldStr = Split(Sql,",") UpdateStr = "" For K = 0 To 90 If Request.Form("CheckGroupSetting("&K&")")="on" Then UpdateStr = UpdateStr & NewStr(k) Else UpdateStr = UpdateStr & OldStr(k) End If If K<90 Then UpdateStr = UpdateStr & "," End If Next sql="insert into dv_BoardPermission (BoardID,GroupID,PSetting) values ("&request("reBoardID")&","&NewGroupid(i)&",'"&UpdateStr&"')" Dvbbs.Execute(Sql) End If Next End If End If '重新提取有自定义的ID Dim IsGroupSetting1 IsGroupSetting=Get_board_AccUserList(CLng(request("reBoardID"))) IsGroupSetting1=Get_Board_GroupSetting(CLng(request("reBoardID"))) If IsGroupSetting="" Then IsGroupSetting=IsGroupSetting1 ElseIf IsGroupSetting1<>"" Then IsGroupSetting=IsGroupSetting&","& IsGroupSetting1 End If Dvbbs.Execute("update dv_Board set IsGroupSetting='"&IsGroupSetting&"' Where BoardID="&CLng(request("reBoardID"))) RestoreBoardCache() Set Rs=Nothing Dv_suc("修改成功!") Else Dim reGroupSetting,reBoardID,groupid Dim Groupname,Boardname,founduserper,rs founduserper=false if request("GroupID")<>"" then set rs=Dvbbs.Execute("select * from dv_BoardPermission where boardid="&request("reBoardID")&" and GroupID="&request("GroupID")) if rs.eof and rs.bof then founduserper=false else groupid=rs("groupid") reGroupSetting=rs("PSetting") reBoardID=rs("boardid") set rs=Dvbbs.Execute("select usertitle from dv_UserGroups where usergroupid="&groupid) groupname=rs("usertitle") founduserper=true end if if not founduserper then set rs=Dvbbs.Execute("select * from dv_usergroups where usergroupid="&request("groupid")) if rs.eof and rs.bof then response.write "未找到该用户组!" exit sub end if groupid=request("groupid") reGroupSetting=rs("GroupSetting") reBoardID=request("reBoardID") Groupname=rs("usertitle") end if end if set rs=Dvbbs.Execute("select boardtype from dv_board where boardid="&reBoardID) Boardname=rs("boardtype") %> <table width="100%" border="0" cellspacing="1" cellpadding="3" align="center"> <FORM METHOD=POST ACTION="?action=editpermission"> <input type=hidden name="groupid" value="<%=groupid%>"> <input type=hidden name="reBoardID" value="<%=reBoardID%>"> <input type=hidden name="pID" value="<%=request("pid")%>"> <tr> <th colspan="4" style="text-align:center;">编辑论坛用户组权限 >> <%=boardname%> >> <%=groupname%></th> </tr> <tr> <td height="23" colspan="4" class=td1><input type=radio class="radio" name="isdefault" value="1" <%if not founduserper then%>checked<%end if%>><B>使用用户组默认值</B> (注意: 这将删除任何之前所做的自定义设置)</td> </tr> <tr> <td height="23" colspan="4" class=td1><input type=radio class="radio" name="isdefault" value="0" <%if founduserper then%>checked<%end if%>><B>使用自定义设置</B> (选择自定义才能使以下设置生效) </td> </tr> <tr> <td height="23" colspan="4" class=td1> ①<font color="red">在更新多个用户组设置时,请选取最左边的复选表单,只有选取的设置项目才会更新;</font> <BR>②不执行多用户组更新时,不需要选取左边的复选表单; <br><b>批量更新用户组设置</b>:<input type="button" value="选择用户组" class="button" onclick="getGroup('Select_Group');"> <INPUT TYPE="checkbox" NAME="chkall" onclick="CheckAll(this.form);" class="checkbox">[全选] </td> </tr> <% GroupPermission(reGroupSetting) %> <input type=hidden value="yes" name="groupaction"> </FORM> </table> <% Call Select_Group(Request("groupid")) end if end sub sub RestoreBoard() '按照目前的排序循环i数值更新rootid '还原所有版面的depth,orders,parentid,parentstr,child为0 Dim i,rs i=0 set rs=Dvbbs.Execute("select boardid from dv_board order by rootid,orders") do while not rs.eof i=i+1 Dvbbs.Execute("update dv_board set rootid="&i&",depth=0,orders=0,ParentID=0,ParentStr='0',child=0 where boardid="&rs(0)) rs.movenext loop Set Rs=Nothing Dv_suc("请返回做论坛归属设置。复位") RestoreBoardCache() End sub Sub clearDate If Dvbbs.Boardid=0 Then errmsg=errmsg+"<br><li>请选择论坛版面" dvbbs_error() Exit Sub End If Dim Rs,str1,str2,str3,str4,i Set Rs=Dvbbs.Execute("Select Count(*) from dv_topic where Boardid="& Dvbbs.boardid &"") str1=Rs(0) str3=0 str4=0 For i= 0 to UBound(AllPostTable) Set Rs=Dvbbs.Execute("Select Count(*) from "&AllPostTable(i)&" where Boardid="& Dvbbs.boardid &"") str2=str2&"其中在"&AllPostTable(i)&"有"&Rs(0)&"篇文章," str3=str3+Rs(0) Set Rs=Dvbbs.Execute("Select Count(*) from "&AllPostTable(i)&" where Boardid="& Dvbbs.boardid &" and isbest=1") str4=str4+Rs(0) Next Response.Write"<br>" Response.Write"<table cellpadding=0 cellspacing=0 align=center width=""100%"">" Response.Write"<tr align=center>" Response.Write"<th width=""100%"" colspan=2 style=""text-align:center;"">" Response.Write Dvbbs.BoardType Response.Write "-贴子信息" Response.Write"</td>" Response.Write"</tr>" Response.Write"<tr>" Response.Write"<td width=""100%"" class=""td2"" colspan=2>" Response.Write "<li>主题总数:<b>" Response.Write str1 Response.Write "</b><li>文章总数:<b>" Response.Write str3 Response.Write "</b><li>" Response.Write str2 Response.Write "<li>有<B>"&str4&"</B>篇精华文章" Response.Write"</td></tr>" Response.Write "<form action =""?action=delDate&boardid="&Dvbbs.boardid&""" method=post>" Response.Write"<tr>" Response.Write"<td class=""td2"" valign=middle colspan=2 align=left><li> 清除<b>" Response.Write Dvbbs.BoardType Response.Write "</b>在 " Response.Write "<select name=""tablelist""><option value=""all"">所有数据表</option>" For i= 0 to UBound(AllPostTable) Response.Write "<option value="""&AllPostTable(i)&""">" Response.Write AllPostTableName(i) Response.Write "</option>" Next Response.Write "</select>" Response.Write " 中 <input type=text name=dd value=365 size=5 > 天前的贴子" Response.Write " <input type=""submit"" name=""Submit"" value=""执 行"" class=""button""> <b>注意:此操作不可恢复!</b>其中精华贴不会被删除。<BR><BR>如果您的论坛数据众多,执行此操作将消耗大量的服务器资源,执行过程请耐心等候,最好选择夜间在线人少的时候更新。" Response.Write "</td></tr>" Response.Write "</form>" Response.Write"</table>" End Sub Sub delDate Dim i,rs,sql If Dvbbs.Boardid=0 Then errmsg=errmsg+"<br><li>请选择论坛版面" dvbbs_error() Exit Sub End If Dim tablelist If request.form("tablelist")<>"all" Then tablelist=Dvbbs.checkstr(request.form("tablelist")) Else For i= 0 to UBound(AllPostTable) If i=0 Then tablelist=AllPostTable(i) Else tablelist=tablelist&","&AllPostTable(i) End If Next End If tablelist=split(tablelist,",") Dim SqlTopic Dim k k=0 For i= 0 to UBound(tablelist) '删除数据表记录 If IsSqlDataBase=1 Then SqlTopic="Select TopicID,isvote,PollID from dv_Topic where Boardid="&Dvbbs.boardid&" and isbest=0 and PostTable='"&tablelist(i)&"' and Datediff(d,LastPostTime,"&SqlNowString&") > "& CLng(request.form("dd"))&" " Else SqlTopic="Select TopicID,isvote,PollID from dv_Topic where Boardid="&Dvbbs.boardid&" and isbest=0 and PostTable='"&tablelist(i)&"' and Datediff('d',LastPostTime,"&SqlNowString&") > "& CLng(request.form("dd"))&" " End If Set rs=Dvbbs.Execute(SqlTopic) Do While Not Rs.Eof Sql="Delete from "&tablelist(i)&" where Boardid="&Dvbbs.boardid&" and rootid="&RS(0)&"" Dvbbs.Execute(Sql) If Rs(1)=1 And Not IsNull(Rs(2)) Then Sql="Delete from dv_vote where voteid="&RS(2)&"" Dvbbs.Execute(Sql) End If Dvbbs.Execute("Delete from Dv_Appraise where Boardid="&Dvbbs.boardid&" and Topicid="&RS(0)&"") Rs.movenext k=k+1 Loop '删除主题表记录 If IsSqlDataBase=1 Then SqlTopic="Delete from dv_Topic where Boardid="&Dvbbs.boardid&" and isbest=0 and PostTable='"&tablelist(i)&"' and Datediff(d,LastPostTime,"&SqlNowString&") > "& CLng(request.form("dd"))&" " Else SqlTopic="Delete from dv_Topic where Boardid="&Dvbbs.boardid&" and isbest=0 and PostTable='"&tablelist(i)&"' and Datediff('d',LastPostTime,"&SqlNowString&") > "& CLng(request.form("dd"))&" " End If Dvbbs.Execute(SqlTopic) Set rs=Nothing Next Response.Write "删除了"&k&"个主题。" End Sub Sub RestoreClass() Dim ClassID,RootID,RootIDNum,ParentID,Rs,i ClassID=Request("ClassID") If Not IsNumeric(ClassID) Or ClassID="" Then Response.Write "错误的版面参数!" Exit Sub Else ClassID=Clng(ClassID) End If Set Rs=Dvbbs.Execute("Select RootID,BoardID From Dv_Board Where BoardID="&ClassID) If Rs.Eof And Rs.Bof Then Response.Write "错误的版面参数!" Exit Sub Else RootID=Rs(0) ParentID=Rs(1) End If i=0 Set Rs=Dvbbs.Execute("Select BoardID,ParentID From Dv_Board Where RootID="&RootID&" Order By ParentID,Orders,Depth") Do While Not Rs.Eof If Rs(1)=0 Then Dvbbs.Execute("UpDate Dv_Board Set Orders="&i&" Where BoardID="&Rs(0)) Else Dvbbs.Execute("UpDate Dv_Board Set Orders="&i&",ParentID="&ParentID&",ParentStr='"&ParentID&"',Depth=1,child=0 Where BoardID="&Rs(0)) End If i=i+1 Rs.MoveNext Loop Set Rs=Dvbbs.Execute("Select Count(*) From Dv_Board Where RootID="&RootID) RootIDNum=Rs(0) If IsNull(RootIDNum) Or RootIDNum="" Then RootIDNum=0 Else RootIDNum=RootIDNum-1 End If Dvbbs.Execute("UpDate Dv_Board Set Child="&RootIDNum&" Where BoardID="&ClassID) dv_suc("复位分类成功!") RestoreBoardCache() Set Rs=Nothing End Sub Sub handorders() %> <table width="100%" border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <th>论坛分类重新排序修改(请在相应论坛分类的排序表单内输入相应的排列序号) </th> </tr> <tr> <td class="td1"> <B>注意</B>:<BR> 1、由于本论坛排序算法不是递归,所以请正确输入排序的序号,否则将引起论坛显示不正常,<font color=red>如果您未正确了解说明,请不要随意更改</font><BR> 2、一级分类排序序号为0,请正确输入,<font color=blue>所有输入框请输入数字</font><BR> 3、排序规则为数字最大的排在后面,<font color=blue>在这里不能用排序来指定某个版面的所属分类或版面</font>,如下为正确的排序输入方式:<BR> <B>分类</B> 0<BR> --二级版面A 1<BR> --二级版面B 2<BR> ----三级版面A 3<BR> ----三级版面B 4<BR> ----三级版面C 5<BR> --二级版面C 6<BR> A.<font color=blue>要把三级版面C提到三级版面A上面</font>,则依次输入:分类(0)-二级A(1)-二级B(2)-三级A(<font color=red>4</font>)-三级B(<font color=red>5</font>)-三级C(<font color=red>3</font>)-二级C(6)<BR> B.<font color=blue>要把二级版面C提到二级版面B上面</font>,则依次输入:分类(0)-二级A(1)-二级B(<font color=red>3</font>)-三级A(<font color=red>4</font>)-三级B(<font color=red>5</font>)-三级C(<font color=red>6</font>)-二级C(<font color=red>2</font>)<BR> B.<font color=blue>要把二级版面B提到二级版面A上面</font>,则依次输入:分类(0)-二级A(<font color=red>5</font>)-二级B(<font color=red>1</font>)-三级A(<font color=red>2</font>)-三级B(<font color=red>3</font>)-三级C(<font color=red>4</font>)-二级C(6) </td></tr> <form action="board.asp?action=savehandorders" method=post> <tr> <td class="td1"><table width="100%"> <% dim trs,uporders,doorders,RootID,Rs,sql,i Set Rs=Dvbbs.Execute("Select RootID From Dv_Board Where BoardID="&Dvbbs.CheckNumeric(Request("classid"))) If Rs.eof And Rs.bof Then response.write "还没有相应的论坛分类。" exit sub Else RootID=Rs(0) End If set rs = server.CreateObject ("Adodb.recordset") sql="select * from dv_Board Where RootID="&RootID&" order by RootID,orders" rs.open sql,conn,1,1 if rs.eof and rs.bof then response.write "还没有相应的论坛分类。" else do while not rs.eof response.write "<tr><td width=""50%"">" if rs("depth")>0 then for i=1 to rs("depth") response.write " " next end if if rs("child")>0 then response.write "<img src=../skins/default/plus.gif>" else response.write "<img src=../skins/default/nofollow.gif>" end if if rs("parentid")=0 then response.write "<b>" end if response.write rs("boardtype") if rs("child")>0 then response.write "("&rs("child")&")" end if response.write "</td><td width=""50%"">" Response.Write "<input type=hidden value="""&rs("boardid")&""" name=getboard>" Response.Write "<input type=text size=5 value="""&rs("orders")&""" name=orders>" response.write "</td></tr>" uporders=0 doorders=0 rs.movenext loop Response.Write "<tr><td class=td1><input type=submit name=submit value=提交 class=button></td></tr>" response.write "</table>" end if rs.close set rs=nothing %> </td> </tr></form> </table> <% End Sub Sub savehandorders() dim cID,OrderID,ClassName,i cID=replace(request.form("getboard"),"'","") OrderID=replace(request.form("Orders"),"'","") For i=1 to request.form("getboard").count cID=Dvbbs.CheckNumeric(request.form("getboard")(i)) OrderID=Dvbbs.CheckNumeric(request.form("Orders")(i)) Dvbbs.Execute("Update Dv_Board Set Orders="&OrderID&" Where BoardID="&cID) next Dv_suc("更改分类排序成功!") CheckAndFixBoard 0,1 RestoreBoardCache() End Sub Sub RestoreBoardCache() Dvbbs.Name="jsonboardlist0" Dvbbs.RemoveCache Dvbbs.Name="jsonboardlist1" Dvbbs.RemoveCache Dim Board Dvbbs.Name="0" Dvbbs.RemoveCache Dvbbs.LoadBoardList() For Each board in Application(Dvbbs.CacheName&"_boardlist").documentElement.selectNodes("board/@boardid") Dvbbs.LoadBoardData board.text Dvbbs.LoadBoardinformation board.text Next If Request("action")="RestoreBoardCache" Then dv_suc("重建所有版面缓存成功!") End Sub Sub CheckAndFixBoard(ParentID,orders) Dim Rs,SQL,Child,ParentStr,i If ParentID=0 Then Dvbbs.Execute("update dv_board set Depth=0,ParentStr='0' where ParentID=0") End If Set Rs=Dvbbs.Execute("Select BoardID,rootid,ParentStr,Depth From Dv_Board where ParentID="&ParentID&" order by Rootid,orders") If Not Rs.Eof Then SQL = Rs.GetRows(-1) Rs.Close:Set Rs=Nothing For i=0 To Ubound(SQL,2) If SQL(2,i)<>"0" Then ParentStr=SQL(2,i)&","&SQL(0,i) Else ParentStr=SQL(0,i) End If Conn.Execute "update dv_board set Depth="&SQL(3,i)+1&",ParentStr='"&ParentStr&"',rootid="&SQL(1,i)&" where ParentID="&SQL(0,i)&"",Child Dvbbs.Execute("update dv_board set Child="&Child&",orders="&orders&" Where BoardID="&SQL(0,i)&"") orders=orders+1 CheckAndFixBoard SQL(0,i),orders Next End If End Sub Function Get_board_AccUserList(bid) Dim Rs,tmp Set Rs=Dvbbs.Execute("Select uc_userid from dv_UserAccess where uc_boardid="&bid&"") tmp="" If Not Rs.EOF Then Do while Not Rs.EOF If tmp="" Then tmp="0_"&rs(0) Else tmp=tmp&",0_"&rs(0) End If Rs.MoveNext Loop Get_board_AccUserList=tmp Else Get_board_AccUserList="" End If Set Rs=Nothing End Function Function Get_Board_GroupSetting(bid) Dim Rs,tmp Set Rs=Dvbbs.Execute("select GroupID From Dv_BoardPermission Where BoardID="&bid) tmp="" If Not Rs.EOF Then Do while Not Rs.EOF If tmp="" Then tmp=rs(0) Else tmp=tmp&","&rs(0) End If Rs.MoveNext Loop Get_Board_GroupSetting=tmp Else Get_Board_GroupSetting="" End If Set Rs=Nothing End Function Rem 统计下属论坛函数 2004-5-3 Dvbbs.YangZheng Sub Boardchild() Dim cBoardNum, cBoardid Dim Trs,rs,Sql Dim Bn,i Dvbbs.Execute("UPDATE Dv_Board SET Child = 0") Set Rs = Dvbbs.Execute("SELECT Boardid, Rootid, ParentID, Depth, Child, ParentStr FROM Dv_Board ORDER BY Boardid DESC") If Not (Rs.Eof And Rs.Bof) Then Sql = Rs.GetRows(-1) Rs.Close:Set Rs = Nothing For Bn = 0 To Ubound(Sql,2) If Isnull(Sql(4,Bn)) And Cint(Sql(3,Bn)) > 0 Then Dvbbs.Execute("UPDATE Dv_Board SET Child = 0 WHERE Boardid = " & Sql(0,Bn)) End If If Cint(Sql(2,Bn)) = 0 And Cint(Sql(3,Bn)) = 0 Then Set Trs = Dvbbs.Execute("SELECT COUNT(*) FROM Dv_Board WHERE RootID = " & Sql(1,Bn)) Cboardnum = Trs(0) - 1 Trs.Close:Set Trs = Nothing If Isnull(Cboardnum) Or Cboardnum < 0 Then Cboardnum = 0 Dvbbs.Execute("UPDATE Dv_Board SET Child = " & Cboardnum & " WHERE Boardid = " & Sql(0,Bn)) Elseif Cint(Sql(3,Bn)) > 1 Then cBoardid = Split(Sql(5,Bn),",") For i = 1 To Ubound(cBoardid) Dvbbs.Execute("UPDATE Dv_Board SET Child = Child + 1 WHERE Boardid = " & cBoardid(i)) Next End If Next End If End Sub %>